//
//  Problem1446.swift
//  TestProject
//
//  Created by 武侠 on 2021/3/22.
//  Copyright © 2021 zhulong. All rights reserved.
//

import UIKit

/*
 1446. 连续字符 【字符对比】
 给你一个字符串 s ，字符串的「能量」定义为：只包含一种字符的最长非空子字符串的长度。

 请你返回字符串的能量。

 示例 1：
     输入：s = "leetcode"
     输出：2
     解释：子字符串 "ee" 长度为 2 ，只包含字符 'e' 。
 示例 2：
     输入：s = "abbcccddddeeeeedcba"
     输出：5
     解释：子字符串 "eeeee" 长度为 5 ，只包含字符 'e' 。
 示例 3：
     输入：s = "triplepillooooow"
     输出：5
 示例 4：
     输入：s = "hooraaaaaaaaaaay"
     输出：11
 示例 5：
     输入：s = "tourist"
     输出：1
 提示：
     1 <= s.length <= 500
     s 只包含小写英文字母。
 */
@objcMembers class Problem1446: NSObject {
    func solution() {
        print(maxPower("leetcode"))
        print(maxPower("abbcccddddeeeeedcba"))
        print(maxPower("triplepillooooow"))
        print(maxPower("hooraaaaaaaaaaay"))
        print(maxPower("tourist"))
    }
    /*
     遍历字符串
     1: 遍历字符串，记录上一个字符
     2: 判断当前字符和上一个字符是否相等，相等则+1，不相等，判断与最大值的比较
     */
    func maxPower(_ s: String) -> Int {
        var maxValue = 0
        var lastC: Character? = nil
        var value = 0
        for c in s {
            guard let safeLastC = lastC else {
                lastC = c
                value = 1
                continue
            }
            if c == safeLastC {
                value += 1
            } else {
                maxValue = max(maxValue, value)
                value = 1
                lastC = c
            }
        }
        return max(maxValue, value)
    }
}
